
package bd;
import classes.*;
import java.sql.*;
import java.util.*;


public class AssentamentoChamadoBD {

    public static boolean salvar(AssentamentoChamado assentamentoChamado,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ASSENTAMENTOCHAMADO(?,?,?,?)}");
            procedure.setInt(1, (Integer)null);
            procedure.setString(2,assentamentoChamado.getDescr());
            procedure.setInt(3, assentamentoChamado.getChamado().getId());
            procedure.setString(4,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean alterar(AssentamentoChamado assentamentoChamado,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ASSENTAMENTOCHAMADO(?,?,?,?)}");
            procedure.setInt(1, assentamentoChamado.getId());
            procedure.setString(2,assentamentoChamado.getDescr());
            procedure.setInt(3, assentamentoChamado.getChamado().getId());
            procedure.setString(4,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean deletar(int codigo)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ASSENTAMENTOCHAMADO(?,?,?,?)}");
            procedure.setInt(1, codigo);
            procedure.setString(2,null);
            procedure.setInt(3,(Integer)null);
            procedure.setString(4,"");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;
        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static AssentamentoChamado selecionar(int codigo)
    {
        AssentamentoChamado retorno = null;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_ASSENTAMENTOCHAMADO where asc_id="+codigo+"");
            if(resultado.next())
            {
                AssentamentoChamado novoAssentamentoChamado = new AssentamentoChamado();
                novoAssentamentoChamado.setId(codigo);
                novoAssentamentoChamado.setDescr(resultado.getString("asc_descr"));
                novoAssentamentoChamado.setChamado(ChamadoBD.selecionar(resultado.getInt("cha_id")));
                retorno=novoAssentamentoChamado;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static ArrayList<AssentamentoChamado> selecionar()
    {
        ArrayList<AssentamentoChamado> vetAssentamentoChamados = new ArrayList<AssentamentoChamado>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_ASSENTAMENTOCHAMADO");
            while(resultado.next())
            {
                AssentamentoChamado novoAssentamentoChamado = new AssentamentoChamado();
                novoAssentamentoChamado.setId(resultado.getInt("asc_id"));
                novoAssentamentoChamado.setDescr(resultado.getString("asc_descr"));
                novoAssentamentoChamado.setChamado(ChamadoBD.selecionar(resultado.getInt("cha_id")));
                vetAssentamentoChamados.add(novoAssentamentoChamado);
            }
            conexao.close();
            return vetAssentamentoChamados;
        }catch(Exception excecao)
        {
            return null;
        }
    }

}
